package com.heima.user.service;

import com.baomidou.mybatisplus.extension.service.IService;
import com.heima.model.common.dtos.ResponseResult;
import com.heima.model.user.pojos.ApUserChannel;

import java.util.List;

public interface ApUserChannelService extends IService<ApUserChannel> {
    
    /**
     * 根据用户ID和频道ID查询订阅关系
     * @param userId 用户ID
     * @param channelId 频道ID
     * @return 订阅关系
     */
    ApUserChannel getByUserIdAndChannelId(Integer userId, Integer channelId);
    
    /**
     * 根据用户ID查询所有订阅的频道
     * @param userId 用户ID
     * @return 频道列表
     */
    List<ApUserChannel> getByUserId(Integer userId);
    
    /**
     * 初始化用户频道订阅关系
     * @param userId 用户ID
     */
    void initUserChannels(Integer userId);
    
    /**
     * 同步自媒体频道到用户端
     * @param wmChannelId 自媒体频道ID
     * @param wmChannelName 自媒体频道名称
     * @param isDefault 是否默认频道
     * @param status 是否启用
     */
    void syncWmChannelToUser(Integer wmChannelId, String wmChannelName, Boolean isDefault, Boolean status);
    /**
     * 判断用户是否订阅了某个频道
     * @param userId 用户ID
     * @param channelId 频道ID
     * @return 是否订阅
     */

    ResponseResult isSub(Integer userId, Integer channelId);
    /**
     * 订阅或取消订阅频道
     * @param userId 用户ID
     * @param channelId 频道ID
     * @param isSub 是否订阅
     * @return 响应结果
     */

    ResponseResult sub(Integer userId, Integer channelId, Boolean isSub);
    /**
     * 获取用户已订阅的频道列表
     * @param userId 用户ID
     * @return 已订阅频道列表
     */
    ResponseResult getUserSubChannels(Integer userId);
}
